#include <iostream>
#include <signal.h>
#include <unistd.h>

using namespace std;

// int cnt = 0;
// int n = 0;

// void headler(int signo)
// {
//     alarm(2);
//     cout << "result: " << n << endl;
//     //cout << "get a signo: " << signo << " alarm: " << cnt << endl;
//     //exit(0);
// }

// int main()
// {
//     signal(14, headler);
    
//     cout << "pid: " << getpid() << endl;
//     alarm(2);

//     while(1)
//     {
//         sleep(1);
//         cout << "running ... " << endl;
//     }
//     return 0;
// }

// void headler(int signo)
// {
//     cout << "get a signo: " << signo << endl;
//     sleep(1);
// }

int main()
{

    //signal(8, headler);


    int x = 10; 
    int y = 0;

    printf("running ...  pid: %d\n", getpid());
    
    int z = x / y;

    return 0; 
}

// int main()
// {
//     int *p = nullptr;
//     *p = 10;
//     return 0;
// }

// // abort
// void headler(int signo)
// {
//     cout << "get a signo: " << signo << endl;
// }

// int main()
// {
//     signal(SIGABRT, headler);

//     abort();

//     while(1)
//     {
//         cout << "running ... " << endl;
//         sleep(1);
//     }
//     return 0;
// }

// // raise
// void headler(int signo)
// {
//     cout << "get a signo: " << signo << endl;
//     sleep(1);
// }

// int main()
// {
//     signal(2, headler);

//     while(1)
//     {
//         raise(2);
//     }
//     return 0;
// }

// kill
// // 输入准则
// static void Usage(const string &proc)
// {
//     cout << "\nUsage: " << proc << "-signumber process" << endl;
// }

// void headler(int signo)
// {
//     cout << "收到一个" << signo << "号信号" << endl;
// }

// int main(int argc, char *argv[])
// {
//     if(argc != 3)
//     {
//         Usage(argv[0]);
//         exit(0);
//     }

//     // "-"
//     int signumber = stoi(argv[1]+1);
//     int processid = stoi(argv[2]);

//     kill(processid, signumber);

//     return 0;
// }

// void headler(int signo)
// {
//     cout << "收到一个" << signo << "号信号" << endl;
// }

// int main()
// {
//     signal(2, headler);

//     while(1)
//     {
//         cout << "running ... pid: " << getpid() << endl;
//         sleep(1);
//     }
//     return 0;
// }